﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AcadPos.Entity;
using AcadPosApp.Utilidades;
using System.Data;

namespace AcadPosApp.Cadastros
{
    public partial class CadastroCidade : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                carregaEstados();
                TxtPesquisa.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConsultar.ClientID + "')");
            }
        }

        private void carregaEstados()
        {
            ddlEstado.DataSource = ddlEstadoPesquisa.DataSource = ControlClass.CNEstado.listaTodosEstados();
            ddlEstado.DataTextField = ddlEstadoPesquisa.DataTextField = "ESTADO";
            ddlEstado.DataValueField = ddlEstadoPesquisa.DataValueField = "ID_ESTADO";
            ddlEstadoPesquisa.DataBind();
            ddlEstado.DataBind();
        }

        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            carregarCidades();
        }

        private void carregarCidades()
        {
            gvwPesquisa.DataSource = ControlClass.CNCidade.listarCidadesXEstado(ddlEstadoPesquisa.SelectedItem.Text, TxtPesquisa.Text);
            gvwPesquisa.DataBind();
        }

        protected void btnIncluir_Click(object sender, EventArgs e)
        {
            pnlConsulta.Enabled = false;
            pnlEdicao.Visible = true;
            TrustX.Util.UtilForm.LimparCampos(pnlEdicao);
            btnConfirmar.CommandName = "Incluir";

            ddlEstado.DataSource = ControlClass.CNEstado.listaTodosEstados();
            ddlEstado.DataTextField = "ESTADO";
            ddlEstado.DataValueField = "ID_ESTADO";
            ddlEstado.DataBind();
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            pnlEdicao.Visible = false;
            pnlConsulta.Enabled = true;
        }

        protected void btnConfirmar_Click(object sender, EventArgs e)
        {
            try
            {
                Cidade cidade = new Cidade();
                cidade.CodEstado = Convert.ToInt32(ddlEstado.SelectedValue);
                cidade.Descricao = TxtDescricao.Text;
                cidade.Situacao = ddlSituacao.SelectedValue;
                string usuario = User.Identity.Name;

                if (btnConfirmar.CommandName == "Incluir")
                {                                  
                    DataTable dtDados = ControlClass.CNCidade.cidadeExisteNesteEstado(cidade.CodEstado, cidade.Descricao);
                    if (dtDados.Rows.Count > 0)
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.RegistroJaCadastrado, "")), true); 
                        TxtDescricao.Text = string.Empty;
                        TxtDescricao.Focus();
                    }                    
                    else
                    {
                        if (ControlClass.CNCidade.inserirCidade(cidade, usuario))
                        {
                            carregarCidades();
                            pnlConsulta.Enabled = true;
                            pnlEdicao.Visible = false;
                            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoInserir, "")), true);
                        }
                        else
                        {
                            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
                        }
                    }                    
                }
                else if (btnConfirmar.CommandName == "Alterar")
                {
                    cidade.CodCidade = Convert.ToInt32(ViewState["ID_CIDADE"]);
                    if (ControlClass.CNCidade.alterarCidade(cidade, usuario))
                    {
                        carregarCidades();
                        pnlConsulta.Enabled = true;
                        pnlEdicao.Visible = false;
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoAlterar, "")), true);
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
                    }
                }
            }
            catch (Exception)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);            
            }            
        }

        protected void gvwPesquisa_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                Cidade cidade = new Cidade();
                int index = int.Parse((String)e.CommandArgument);
                cidade.CodCidade = Convert.ToInt32(gvwPesquisa.DataKeys[index]["ID_CIDADE"].ToString());
                string usuario = User.Identity.Name;
                DataTable dadosCidade = ControlClass.CNCidade.obterDadosCidade(cidade.CodCidade);
                cidade.CodEstado = Convert.ToInt32(dadosCidade.Rows[0]["ID_ESTADO"].ToString());
                cidade.Descricao = Server.HtmlDecode(dadosCidade.Rows[0]["NOME_CIDADE"].ToString());
                cidade.Situacao = Server.HtmlDecode(dadosCidade.Rows[0]["SITUACAO"].ToString());

                if (e.CommandName == "Alterar")
                {
                    pnlEdicao.Visible = true;
                    pnlConsulta.Enabled = false;
                    TxtDescricao.Text = cidade.Descricao;
                    ddlSituacao.SelectedValue = cidade.Situacao.Trim();
                    carregaEstados();
                    ddlEstado.SelectedValue = cidade.CodEstado.ToString();
                    ViewState["ID_CIDADE"] = cidade.CodCidade;
                    btnConfirmar.CommandName = "Alterar";
                }
                else if (e.CommandName == "Excluir")
                {
                    if (ControlClass.CNCidade.excluirCidade(cidade, usuario))
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoExcluir, "")), true);
                        carregarCidades();
                        pnlEdicao.Visible = false;
                        pnlConsulta.Enabled = true;
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
                        pnlEdicao.Visible = false;
                        pnlConsulta.Enabled = true;
                    }
                }

            }
            catch (Exception ex)
            {
                if (ex.Message.ToString().Contains("FK_TB_CIDADE_TB_ESTADO") || ex.Message.ToString().Contains("FK_TB_CIDADE_POLO_TB_CIDADE"))
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.ErroChaveEstrangeira, "")), true);

                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, "")), true);
                pnlEdicao.Visible = false;
                pnlConsulta.Enabled = true;
            }
        }

        protected void gvwPesquisa_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            #region Configurando Alert de Confirmação
            // Passando por todas as linhas
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                foreach (DataControlFieldCell cell in e.Row.Cells)
                {
                    // Verificando todas as colunas da linha
                    foreach (Control control in cell.Controls)
                    {
                        //No caso o botão é do tipo Imagem Button
                        ImageButton button = control as ImageButton;
                        if (button != null && button.CommandName == "Excluir")
                        {
                            // Adicionando a mensagem javascript
                            button.OnClientClick = "return ShowConfirm('Tem certeza que deseja excluir?', '" + button.ClientID + "');";
                        }
                    }
                }
            }
            #endregion

            #region Configurando Imagem do Status
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[5].Visible = true;

                Image controle = (Image)e.Row.FindControl("imgStatus");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[5].Text.Trim()) == "A")
                    controle.ImageUrl = "~/Imagens/ativo.png";
                else
                    controle.ImageUrl = "~/Imagens/inativo.png";
                e.Row.Cells[5].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[5].Visible = false;
            }
            #endregion

        }

        protected void gvwPesquisa_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton button = (ImageButton)e.Row.FindControl("ImgExcluir");
                button.CommandArgument = e.Row.RowIndex.ToString();

                ImageButton button2 = (ImageButton)e.Row.FindControl("ImgAlterar");
                button2.CommandArgument = e.Row.RowIndex.ToString();
            }
        }

        protected void gvwPesquisa_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwPesquisa.PageIndex = e.NewPageIndex;
            carregarCidades();
        }
    }
}